home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / HyperXCmd.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  12KB  |  381 lines

  1. /*
  2.      File:        HyperXCmd.h
  3.  
  4.      Contains:    Interfaces for HyperCard XCMD's
  5.  
  6.      Version:    Technology:    HyperCard 2.3
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __HYPERXCMD__
  19. #define __HYPERXCMD__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #ifndef __EVENTS__
  25. #include <Events.h>
  26. #endif
  27. #ifndef __TEXTEDIT__
  28. #include <TextEdit.h>
  29. #endif
  30. #ifndef __MENUS__
  31. #include <Menus.h>
  32. #endif
  33. #ifndef __STANDARDFILE__
  34. #include <StandardFile.h>
  35. #endif
  36.  
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif
  40.  
  41. #if PRAGMA_IMPORT_SUPPORTED
  42. #pragma import on
  43. #endif
  44.  
  45. #if PRAGMA_ALIGN_SUPPORTED
  46. #pragma options align=mac68k
  47. #endif
  48.  
  49. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  50. /* result codes */
  51.  
  52. enum {
  53.     xresSucc                    = 0,
  54.     xresFail                    = 1,
  55.     xresNotImp                    = 2
  56. };
  57.  
  58. /* XCMDBlock constants for event.what... */
  59.  
  60. enum {
  61.     xOpenEvt                    = 1000,                            /* the first event after you are created */
  62.     xCloseEvt                    = 1001,                            /* your window is being forced close (Quit?) */
  63.     xGiveUpEditEvt                = 1002,                            /* you are losing Edit... */
  64.     xGiveUpSoundEvt                = 1003,                            /* you are losing the sound channel... */
  65.     xHidePalettesEvt            = 1004,                            /* someone called HideHCPalettes */
  66.     xShowPalettesEvt            = 1005,                            /* someone called ShowHCPalettes */
  67.     xEditUndo                    = 1100,                            /* Edit----Undo */
  68.     xEditCut                    = 1102,                            /* Edit----Cut */
  69.     xEditCopy                    = 1103,                            /* Edit----Copy */
  70.     xEditPaste                    = 1104,                            /* Edit----Paste */
  71.     xEditClear                    = 1105,                            /* Edit----Clear */
  72.     xSendEvt                    = 1200,                            /* script has sent you a message (text) */
  73.     xSetPropEvt                    = 1201,                            /* set a window property */
  74.     xGetPropEvt                    = 1202,                            /* get a window property */
  75.     xCursorWithin                = 1300,                            /* cursor is within the window */
  76.     xMenuEvt                    = 1400,                            /* user has selected an item in your menu */
  77.     xMBarClickedEvt                = 1401,                            /* a menu is about to be shown--update if needed */
  78.     xShowWatchInfoEvt            = 1501,                            /* for variable and message watchers */
  79.     xScriptErrorEvt                = 1502,                            /* place the insertion point */
  80.     xDebugErrorEvt                = 1503,                            /* user clicked "Debug" at a complaint */
  81.     xDebugStepEvt                = 1504,                            /* hilite the line */
  82.     xDebugTraceEvt                = 1505,                            /* same as step but tracing */
  83.     xDebugFinishedEvt            = 1506                            /* script ended */
  84. };
  85.  
  86.  
  87. enum {
  88.     paletteProc                    = 2048,                            /* Windoid with grow box */
  89.     palNoGrowProc                = 2052,                            /* standard Windoid defproc */
  90.     palZoomProc                    = 2056,                            /* Windoid with zoom and grow */
  91.     palZoomNoGrow                = 2060,                            /* Windoid with zoom and no grow */
  92.     hasZoom                        = 8,
  93.     hasTallTBar                    = 2,
  94.     toggleHilite                = 1
  95. };
  96.  
  97. /* paramCount is set to these constants when first calling special XThings */
  98.  
  99. enum {
  100.     xMessageWatcherID            = -2,
  101.     xVariableWatcherID            = -3,
  102.     xScriptEditorID                = -4,
  103.     xDebuggerID                    = -5
  104. };
  105.  
  106. /* XTalkObjectPtr->objectKind values */
  107.  
  108. enum {
  109.     stackObj                    = 1,
  110.     bkgndObj                    = 2,
  111.     cardObj                        = 3,
  112.     fieldObj                    = 4,
  113.     buttonObj                    = 5
  114. };
  115.  
  116. /* selectors for ShowHCAlert's dialogs (shown as buttonID:buttonText) */
  117.  
  118. enum {
  119.     errorDlgID                    = 1,                            /* 1:OK (default) */
  120.     confirmDlgID                = 2,                            /* 1:OK (default) and 2:Cancel */
  121.     confirmDelDlgID                = 3,                            /* 1:Cancel (default) and 2:Delete */
  122.     yesNoCancelDlgID            = 4                                /* 1:Yes (default), 2:Cancel, and 3:No */
  123. };
  124.  
  125. /* type definitions */
  126. struct XCmdBlock {
  127.     short                             paramCount;                    /* If = -1 then new use for XWindoids */
  128.     Handle                             params[16];
  129.     Handle                             returnValue;
  130.     Boolean                         passFlag;
  131.     SignedByte                         filler1;
  132.     UniversalProcPtr                 entryPoint;                    /* to call back to HyperCard */
  133.     short                             request;
  134.     short                             result;
  135.     long                             inArgs[8];
  136.     long                             outArgs[4];
  137. };
  138. typedef struct XCmdBlock XCmdBlock;
  139.  
  140. typedef XCmdBlock *XCmdPtr;
  141. struct XWEventInfo {
  142.     EventRecord                     event;
  143.     WindowPtr                         eventWindow;
  144.     long                             eventParams[9];
  145.     Handle                             eventResult;
  146. };
  147. typedef struct XWEventInfo XWEventInfo;
  148.  
  149. typedef XWEventInfo *XWEventInfoPtr;
  150. struct XTalkObject {
  151.     short                             objectKind;                    /* stack, bkgnd, card, field, or button */
  152.     long                             stackNum;                    /* reference number of the source stack */
  153.     long                             bkgndID;
  154.     long                             cardID;
  155.     long                             buttonID;
  156.     long                             fieldID;
  157. };
  158. typedef struct XTalkObject XTalkObject;
  159.  
  160. typedef XTalkObject *XTalkObjectPtr;
  161. /* maximum number of checkpoints in a script */
  162.  
  163. enum {
  164.     maxCachedChecks                = 16
  165. };
  166.  
  167. struct CheckPts {
  168.     short                             checks[16];
  169. };
  170. typedef struct CheckPts CheckPts;
  171.  
  172. typedef CheckPts *CheckPtPtr;
  173. typedef CheckPtPtr *CheckPtHandle;
  174. /*
  175.         HyperTalk Utilities  
  176. */
  177. extern pascal Handle EvalExpr(XCmdPtr paramPtr, ConstStr255Param expr);
  178.  
  179. extern pascal void SendCardMessage(XCmdPtr paramPtr, ConstStr255Param msg);
  180.  
  181. extern pascal void SendHCMessage(XCmdPtr paramPtr, ConstStr255Param msg);
  182.  
  183. extern pascal void RunHandler(XCmdPtr paramPtr, Handle handler);
  184.  
  185. /*
  186.         Memory Utilities  
  187. */
  188. extern pascal Handle GetGlobal(XCmdPtr paramPtr, ConstStr255Param globName);
  189.  
  190. extern pascal void SetGlobal(XCmdPtr paramPtr, ConstStr255Param globName, Handle globValue);
  191.  
  192. extern pascal void ZeroBytes(XCmdPtr paramPtr, void *dstPtr, long longCount);
  193.  
  194. /*
  195.         String Utilities  
  196. */
  197. extern pascal void ScanToReturn(XCmdPtr paramPtr, Ptr *scanPtr);
  198.  
  199. extern pascal void ScanToZero(XCmdPtr paramPtr, Ptr *scanPtr);
  200.  
  201. extern pascal Boolean StringEqual(XCmdPtr paramPtr, ConstStr255Param str1, ConstStr255Param str2);
  202.  
  203. extern pascal long StringLength(XCmdPtr paramPtr, void *strPtr);
  204.  
  205. extern pascal void *StringMatch(XCmdPtr paramPtr, ConstStr255Param pattern, void *target);
  206.  
  207. extern pascal void ZeroTermHandle(XCmdPtr paramPtr, Handle hndl);
  208.  
  209. /*
  210.         String Conversions  
  211. */
  212. extern pascal void BoolToStr(XCmdPtr paramPtr, Boolean bool, Str255 str);
  213.  
  214. extern pascal void Double_tToStr(XCmdPtr paramPtr, double_t num, Str255 str);
  215.  
  216. extern pascal void LongToStr(XCmdPtr paramPtr, long posNum, Str255 str);
  217.  
  218. extern pascal void NumToHex(XCmdPtr paramPtr, long num, short nDigits, Str255 str);
  219.  
  220. extern pascal void NumToStr(XCmdPtr paramPtr, long num, Str255 str);
  221.  
  222. extern pascal Handle PasToZero(XCmdPtr paramPtr, ConstStr255Param str);
  223.  
  224. extern pascal void PointToStr(XCmdPtr paramPtr, Point pt, Str255 str);
  225.  
  226. extern pascal void RectToStr(XCmdPtr paramPtr, const Rect *rct, Str255 str);
  227.  
  228. extern pascal void ReturnToPas(XCmdPtr paramPtr, void *zeroStr, Str255 pasStr);
  229.  
  230. extern pascal Boolean StrToBool(XCmdPtr paramPtr, ConstStr255Param str);
  231.  
  232. extern pascal double_t StrToDouble_t(XCmdPtr paramPtr, ConstStr255Param str);
  233.  
  234. extern pascal long StrToLong(XCmdPtr paramPtr, ConstStr255Param str);
  235.  
  236. extern pascal long StrToNum(XCmdPtr paramPtr, ConstStr255Param str);
  237.  
  238. extern pascal void StrToPoint(XCmdPtr paramPtr, ConstStr255Param str, Point *pt);
  239.  
  240. extern pascal void StrToRect(XCmdPtr paramPtr, ConstStr255Param str, Rect *rct);
  241.  
  242. extern pascal void ZeroToPas(XCmdPtr paramPtr, void *zeroStr, Str255 pasStr);
  243.  
  244. /*
  245.         Field Utilities  
  246. */
  247. extern pascal Handle GetFieldByID(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldID);
  248.  
  249. extern pascal Handle GetFieldByName(XCmdPtr paramPtr, Boolean cardFieldFlag, ConstStr255Param fieldName);
  250.  
  251. extern pascal Handle GetFieldByNum(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldNum);
  252.  
  253. extern pascal void SetFieldByID(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldID, Handle fieldVal);
  254.  
  255. extern pascal void SetFieldByName(XCmdPtr paramPtr, Boolean cardFieldFlag, ConstStr255Param fieldName, Handle fieldVal);
  256.  
  257. extern pascal void SetFieldByNum(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldNum, Handle fieldVal);
  258.  
  259. extern pascal TEHandle GetFieldTE(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldID, short fieldNum, ConstStr255Param fieldName);
  260.  
  261. extern pascal void SetFieldTE(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldID, short fieldNum, ConstStr255Param fieldName, TEHandle fieldTE);
  262.  
  263. /*
  264.         Miscellaneous Utilities  
  265. */
  266. extern pascal void BeginXSound(XCmdPtr paramPtr, WindowPtr window);
  267.  
  268. extern pascal void EndXSound(XCmdPtr paramPtr);
  269.  
  270. extern pascal Boolean GetFilePath(XCmdPtr paramPtr, ConstStr255Param fileName, short numTypes, ConstSFTypeListPtr typeList, Boolean askUser, OSType *fileType, Str255 fullName);
  271.  
  272. extern pascal void GetXResInfo(XCmdPtr paramPtr, short *resFile, short *resID, ResType *rType, Str255 name);
  273.  
  274. extern pascal void Notify(XCmdPtr paramPtr);
  275.  
  276. extern pascal void SendHCEvent(XCmdPtr paramPtr, const EventRecord *event);
  277.  
  278. extern pascal void SendWindowMessage(XCmdPtr paramPtr, WindowPtr windPtr, ConstStr255Param windowName, ConstStr255Param msg);
  279.  
  280. extern pascal WindowPtr FrontDocWindow(XCmdPtr paramPtr);
  281.  
  282. extern pascal long StackNameToNum(XCmdPtr paramPtr, ConstStr255Param stackName);
  283.  
  284. extern pascal short ShowHCAlert(XCmdPtr paramPtr, short dlgID, ConstStr255Param promptStr);
  285.  
  286. extern pascal Boolean AbortInQueue(XCmdPtr paramPtr);
  287.  
  288. extern pascal void FlushStackFile(XCmdPtr paramPtr);
  289.  
  290. /*
  291.         Creating and Disposing XWindoids  
  292. */
  293. extern pascal WindowPtr NewXWindow(XCmdPtr paramPtr, const Rect *boundsRect, ConstStr255Param title, Boolean visible, short procID, Boolean color, Boolean floating);
  294.  
  295. extern pascal WindowPtr GetNewXWindow(XCmdPtr paramPtr, ResType templateType, short templateID, Boolean color, Boolean floating);
  296.  
  297. extern pascal void CloseXWindow(XCmdPtr paramPtr, WindowPtr window);
  298.  
  299. /*
  300.         XWindoid Utilities  
  301. */
  302. extern pascal void HideHCPalettes(XCmdPtr paramPtr);
  303.  
  304. extern pascal void ShowHCPalettes(XCmdPtr paramPtr);
  305.  
  306. extern pascal void RegisterXWMenu(XCmdPtr paramPtr, WindowPtr window, MenuHandle menu, Boolean registering);
  307.  
  308. extern pascal void SetXWIdleTime(XCmdPtr paramPtr, WindowPtr window, long interval);
  309.  
  310. extern pascal void XWHasInterruptCode(XCmdPtr paramPtr, WindowPtr window, Boolean haveCode);
  311.  
  312. extern pascal void XWAlwaysMoveHigh(XCmdPtr paramPtr, WindowPtr window, Boolean moveHigh);
  313.  
  314. extern pascal void XWAllowReEntrancy(XCmdPtr paramPtr, WindowPtr window, Boolean allowSysEvts, Boolean allowHCEvts);
  315.  
  316. /*
  317.         Text Editing Utilities  
  318. */
  319. extern pascal void BeginXWEdit(XCmdPtr paramPtr, WindowPtr window);
  320.  
  321. extern pascal void EndXWEdit(XCmdPtr paramPtr, WindowPtr window);
  322.  
  323. extern pascal WordBreakUPP HCWordBreakProc(XCmdPtr paramPtr);
  324.  
  325. extern pascal void PrintTEHandle(XCmdPtr paramPtr, TEHandle hTE, StringPtr header);
  326.  
  327. /*
  328.         Script Editor support  
  329. */
  330. extern pascal CheckPtHandle GetCheckPoints(XCmdPtr paramPtr);
  331.  
  332. extern pascal void SetCheckPoints(XCmdPtr paramPtr, CheckPtHandle checkLines);
  333.  
  334. extern pascal void FormatScript(XCmdPtr paramPtr, Handle scriptHndl, long *insertionPoint, Boolean quickFormat);
  335.  
  336. extern pascal void SaveXWScript(XCmdPtr paramPtr, Handle scriptHndl);
  337.  
  338. extern pascal void GetObjectName(XCmdPtr paramPtr, XTalkObjectPtr xObjPtr, Str255 objName);
  339.  
  340. extern pascal void GetObjectScript(XCmdPtr paramPtr, XTalkObjectPtr xObjPtr, Handle *scriptHndl);
  341.  
  342. extern pascal void SetObjectScript(XCmdPtr paramPtr, XTalkObjectPtr xObjPtr, Handle scriptHndl);
  343.  
  344. /*
  345.         Debugging Tools support  
  346. */
  347. extern pascal void AbortScript(XCmdPtr paramPtr);
  348.  
  349. extern pascal void GoScript(XCmdPtr paramPtr);
  350.  
  351. extern pascal void StepScript(XCmdPtr paramPtr, Boolean stepInto);
  352.  
  353. extern pascal void CountHandlers(XCmdPtr paramPtr, short *handlerCount);
  354.  
  355. extern pascal void GetHandlerInfo(XCmdPtr paramPtr, short handlerNum, Str255 handlerName, Str255 objectName, short *varCount);
  356.  
  357. extern pascal void GetVarInfo(XCmdPtr paramPtr, short handlerNum, short varNum, Str255 varName, Boolean *isGlobal, Str255 varValue, Handle varHndl);
  358.  
  359. extern pascal void SetVarValue(XCmdPtr paramPtr, short handlerNum, short varNum, Handle varHndl);
  360.  
  361. extern pascal Handle GetStackCrawl(XCmdPtr paramPtr);
  362.  
  363. extern pascal void TraceScript(XCmdPtr paramPtr, Boolean traceInto);
  364.  
  365. #endif
  366.  
  367. #if PRAGMA_ALIGN_SUPPORTED
  368. #pragma options align=reset
  369. #endif
  370.  
  371. #if PRAGMA_IMPORT_SUPPORTED
  372. #pragma import off
  373. #endif
  374.  
  375. #ifdef __cplusplus
  376. }
  377. #endif
  378.  
  379. #endif /* __HYPERXCMD__ */
  380.  
  381.